from django.http import JsonResponse;
from django.http import HttpResponse

#导入正则表达式的库
import re;

"""
 正则表达式的学习和整理
"""
def test_zhengze_point(request):
    ze_res = {"isSuccess": True}
    print("========测试正则表达式===========")
    #第一次见这样的字符串
    content = '''
			苹果是绿色的
			橙子是橙色的
			香蕉是黄色的
			乌鸦是黑色的
    '''

    p = re.compile(r'.色');
    #找到所有符合条件的内容，返回一个列表，列表的 内容是字符串
    for i in p.findall(content):
        print(type(i))
        print(i)

    return JsonResponse(ze_res);

def test_zhengze_xing(request):
    ze_res = {"isSuccess": True}
    print("========测试正则表达式===========")
    #第一次见这样的字符串
    content = '''
			苹果,是绿色的
			橙子,是橙色的
			香蕉,是黄色的
			乌鸦,是黑色的
			黑色,
    '''

    p = re.compile(r',.*');
    #找到所有符合条件的内容，返回一个列表，列表的 内容是字符串
    for i in p.findall(content):
        print(type(i))
        print(i)

    #return HttpResponse("success");
    return  HttpResponse(p.findall(content))


def test_zhengze_jia(request):
    ze_res = {"isSuccess": True}
    print("========测试正则表达式===========")
    #第一次见这样的字符串
    content = '''
			苹果,是绿色的
			橙子,是橙色的
			香蕉,是黄色的
			乌鸦,是黑色的
			黑色,
    '''

    p = re.compile(r',.+');
    #找到所有符合条件的内容，返回一个列表，列表的 内容是字符串
    for i in p.findall(content):
        print(type(i))
        print(i)

    #return HttpResponse("success");
    return  HttpResponse(p.findall(content));

def test_zhengze_dakuohao(request):
    ze_res = {"isSuccess": True}
    print("========测试正则表达式===========")
    #第一次见这样的字符串
    content = '''
        红彤彤，绿油油，黑乎乎，绿油油油油，绿油油油
    '''

    p = re.compile(r'油{3,4}');
    #找到所有符合条件的内容，返回一个列表，列表的 内容是字符串
    for i in p.findall(content):
        print(type(i))
        print(i)

    #return HttpResponse("success");
    return HttpResponse(p.findall(content));


#贪婪模式和非贪婪模式
def test_zhengze_torft(request):
    ze_res = {"isSuccess": True}
    print("========测试正则表达式===========")
    #第一次见这样的字符串
    source = '<html><head><title>Title</title></head></html>'

    #贪婪模式该正则表达式表示 以< 开头后面的所有内容最后以>结尾的所有内容
    #p = re.compile(r'<.*>');

    #非贪婪模式
    p = re.compile(r'<.*?>');
    #找到所有符合条件的内容，返回一个列表，列表的 内容是字符串
    for i in p.findall(source):
        print(i)
    #return HttpResponse("success");
    res =  HttpResponse(p.findall(source))

    return HttpResponse("success");


#贪婪模式和非贪婪模式
def test_zhengze_fanxiegang(request):

    print("========测试正则表达式===========")
    #第一次见这样的字符串
    source = '''
        苹果.是绿色的
        橙子.是橙色的
        香蕉.是黄色的
        乌鸦.是黑色的
        猴子.
    '''


    #非贪婪模式
    p = re.compile(r'.*\.');
    #找到所有符合条件的内容，返回一个列表，列表的 内容是字符串
    for i in p.findall(source):
        print(i)
    #return HttpResponse("success");
    res = HttpResponse(p.findall(source))

    return res;

#多行模式和上箭头
def test_zhengze_jiantoushang(request):

    print("========测试正则表达式===========")
    #第一次见这样的字符串
    source = '''001-苹果-60，
0u2-苹果-70，
003-苹果-90，
    '''


    #re.M参数表示指定多行模式
    p = re.compile(r'^\d+',re.M);
    #找到所有符合条件的内容，返回一个列表，列表的 内容是字符串
    for i in p.findall(source):
        print(i)
    #return HttpResponse("success");
    res = HttpResponse(p.findall(source))

    return res;


#group test
def test_zhengze_group(request):

    print("========测试正则表达式===========")
    #第一次见这样的字符串
    source = '''
王亚辉,13500344799,89
徐志摩,15900785634,23
周根源,13909876754,44
    '''

    # re.M参数表示指定多行模式,因为第一行是空格，必须使用多行模式
    p = re.compile(r'^(.+),(\d{11})',re.M);
    #找到所有符合条件的内容，返回一个列表，列表的 内容是字符串
    for i in p.findall(source):
        print(i)
    #return HttpResponse("success");
    res = HttpResponse(p.findall(source))

    return res;


#综合案例
def test_zhengze_zh1(request):

    print("========测试正则表达式===========")
    #第一次见这样的字符串
    source = '''
Python3 高级开发工程师 上海互教教育科技有限公司上海-浦东新区2万/月02-18未满员
测试开发工程师(C++/python) 上海墨鹍数码科技有限公司上海-浦东新区2.5万/每月02-18未满员
Python3 开发工程师 上海德拓信息技术股份有限公司上海-徐汇区1.3万/每月02-18剩余11人
测试开发工程师(Python) 赫里普（上海）信息科技有限公司上海-浦东新区1.1万/每月02-18剩余5人
Python高级开发工程师 上海行动教育科技股份有限公司上海-闵行区2.8万/月02-18剩余255人
python开发工程师 上海优似腾软件开发有限公司上海-浦东新区2.5万/每月02-18未满员
    '''

    # re.M参数表示指定多行模式,因为第一行是空格，必须使用多行模式
    p = re.compile(r'区(.+)0',re.M);
    #找到所有符合条件的内容，返回一个列表，列表的 内容是字符串
    for i in p.findall(source):
        print(i)
    #return HttpResponse("success");
    res = HttpResponse(p.findall(source))

    return res;


#综合案例
def test_zhengze_zh2(request):

    print("========测试正则表达式===========")
    #第一次见这样的字符串
    source = '''
Python3 高级开发工程师 上海互教教育科技有限公司上海-浦东新区2万/月02-18未满员
测试开发工程师(C++/python) 上海墨鹍数码科技有限公司上海-浦东新区2.5万/每月02-18未满员
Python3 开发工程师 上海德拓信息技术股份有限公司上海-徐汇区1.3万/每月02-18剩余11人
测试开发工程师(Python) 赫里普（上海）信息科技有限公司上海-浦东新区1.1万/每月02-18剩余5人
Python高级开发工程师 上海行动教育科技股份有限公司上海-闵行区2.8万/月02-18剩余255人
python开发工程师 上海优似腾软件开发有限公司上海-浦东新区2.5万/每月02-18未满员
    '''


    p = re.compile(r'\d\S*万.*月');
    #找到所有符合条件的内容，返回一个列表，列表的 内容是字符串
    for i in p.findall(source):
        print(i)
    #return HttpResponse("success");
    res = HttpResponse(p.findall(source))

    return res;

#综合案例
def test_zhengze_zh3(request):

    print("========测试正则表达式===========")
    #第一次见这样的字符串
    source = '''
Python3 高级开发工程师 上海互教教育科技有限公司上海-浦东新区2万/月02-18未满员
测试开发工程师(C++/python) 上海墨鹍数码科技有限公司上海-浦东新区2.5万/每月02-18未满员
Python3 开发工程师 上海德拓信息技术股份有限公司上海-徐汇区1.3万/每月02-18剩余11人
测试开发工程师(Python) 赫里普（上海）信息科技有限公司上海-浦东新区1.1万/每月02-18剩余5人
Python高级开发工程师 上海行动教育科技股份有限公司上海-闵行区2.8万/月02-18剩余255人
python开发工程师 上海优似腾软件开发有限公司上海-浦东新区2.5万/每月02-18未满员
    '''


    p = re.compile(r'([\d.]+)万\/每{0,1}月',re.M);
    #找到所有符合条件的内容，返回一个列表，列表的 内容是字符串
    for i in p.findall(source):
        print(i)
    #return HttpResponse("success");
    res = HttpResponse(p.findall(source))

    return res;